www.gusucode.com > WeCenter社交化问答系统 v3.1.9PHP源码程序 > WeCenter社交化问答系统 v3.1.9/WeCenter_v3.1.9/WeCenter_v3.1.9/UPLOAD/system/core/mail.php
<?php /* +-------------------------------------------------------------------------- | WeCenter [#RELEASE_VERSION#] | ======================================== | by WeCenter Software | © 2011 - 2014 WeCenter. All Rights Reserved | http://www.wecenter.com | ======================================== | Support: WeCenter@qq.com | +--------------------------------------------------------------------------- */ class core_mail { private $transport; private $transport_error; private $master_transport; private $master_config; private $master_transport_error; private $slave_transport; private $slave_config; private $slave_transport_error; private $sae_option; public function __construct() { $this->master_config = get_setting('mail_config'); $this->slave_config = get_setting('slave_mail_config'); switch ($this->master_config['transport']) { case 'smtp': if (defined('IN_SAE')) { $this->sae_option['smtp_username'] = $this->master_config['username']; $this->sae_option['smtp_password'] = $this->master_config['password']; if ($this->master_config['port']) { $this->sae_option['smtp_port'] = $this->master_config['port']; } $this->sae_option['smtp_host'] = $this->master_config['server']; $this->transport = new SaeMail(); } else { $master_smtp_auth = array( 'auth' => 'login', 'username' => $this->master_config['username'], 'password' => $this->master_config['password'] ); if ($this->master_config['port']) { $master_smtp_auth['port'] = $this->master_config['port']; } if ($this->master_config['ssl']) { $master_smtp_auth['ssl'] = 'ssl'; } try { $this->master_transport = new Zend_Mail_Transport_Smtp($this->master_config['server'], $master_smtp_auth); } catch (Exception $e) { $this->master_transport_error = $e->getMessage(); } if (!$this->slave_config['server']) { $this->slave_config = $this->master_config; } $slave_smtp_auth = array( 'auth' => 'login', 'username' => $this->slave_config['username'], 'password' => $this->slave_config['password'] ); if ($this->slave_config['port']) { $slave_smtp_auth['port'] = $this->slave_config['port']; } if ($this->slave_config['ssl']) { $slave_smtp_auth['ssl'] = 'ssl'; } try { $this->slave_transport = new Zend_Mail_Transport_Smtp($this->slave_config['server'], $slave_smtp_auth); } catch (Exception $e) { $this->slave_transport_error = $e->getMessage(); } } break; default: case 'sendmail': try { $this->transport = new Zend_Mail_Transport_Sendmail(get_setting('from_email')); } catch (Exception $e) { $this->transport_error = $e->getMessage(); } break; } } public function send($address, $title, $body, $from_name = null, $to_name = null, $server = 'master') { if ($this->transport) { $transport_error = $this->transport_error; $transport = $this->transport; $mail_config = $this->master_config; } else { switch ($server) { case 'master': $transport_error = $this->master_transport_error; $mail_config = $this->master_config; $transport = $this->master_transport; break; case 'slave': $transport_error = $this->slave_transport_error; $mail_config = $this->slave_config; $transport = $this->slave_transport; break; } } if ($transport_error) { return $transport_error; } if (strtoupper($mail_config['charset']) != 'UTF-8') { $from_name = convert_encoding($from_name, 'UTF-8', $mail_config['charset']); $to_name = convert_encoding($to_name, 'UTF-8', $mail_config['charset']); $title = convert_encoding($title, 'UTF-8', $mail_config['charset']); $body = convert_encoding($body, 'UTF-8', $mail_config['charset']); } if (defined('IN_SAE')) { $this->sae_option['from'] = get_setting('from_email'); $this->sae_option['to'] = $address; $this->sae_option['subject'] = $title; $this->sae_option['content_type'] = 'HTML'; $this->sae_option['content'] = $body; $this->transport->setOpt($this->sae_option); if (!$this->transport->send()) { return $this->transport->errmsg(); } } else { try { $zend_mail = new Zend_Mail($mail_config['charset']); $zend_mail->setBodyHtml($body); $zend_mail->setFrom(get_setting('from_email'), $from_name); $zend_mail->addTo($address, $to_name); $zend_mail->setSubject($title); $zend_mail->send($transport); } catch (Exception $e) { return $e->getMessage(); } } } }